import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable()
export class TransformInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    console.log('TransformInterceptor - 开始处理响应');
    
    return next.handle().pipe(
      map(data => {
        console.log('TransformInterceptor - 原始响应数据:', data);
        
        // 如果返回的数据已经是标准格式，直接返回
        if (data && data.code !== undefined && data.message !== undefined) {
          console.log('TransformInterceptor - 数据已经是标准格式，直接返回');
          return data;
        }
        
        // 否则包装成标准格式
        const result = {
          code: 200,
          message: '请求成功',
          data
        };
        
        console.log('TransformInterceptor - 包装后的响应数据:', result);
        return result;
      }),
    );
  }
}
